/**
 *  @file objectFactory.h
 *
 *  @date 5-dec-2009
 *  @author Ives van der Flaas
 */

#ifndef OBJECTFACTORY_H_
#define OBJECTFACTORY_H_

#include <tr1/memory>
#include "timer.h"
#include "enemyShip.h"
#include "friendlyShip.h"
#include "levelTitle.h"
#include "scoreKeeper.h"
#include "shipDescr.h"

namespace si
{
/**
 * Factory for all game objects (including timers, ships, ...)
 */
class ObjectFactory
{
public:

	virtual std::tr1::shared_ptr<Timer> getTimer()= 0;
	virtual std::tr1::shared_ptr<FriendlyShip> getFriendlyFighter()= 0;
	virtual std::tr1::shared_ptr<EnemyShip> getEnemyFighter(si::Vector2 position, ShipDescr descr)= 0;

	virtual std::tr1::shared_ptr<Representation> getBackground(int level)=0;
	virtual std::tr1::shared_ptr<LevelTitle> getLevelTitle(std::string title)= 0;

private:

};

}

#endif /* OBJECTFACTORY_H_ */
